/**
 * @file 原始GPS日志接口
 * @description 定义原始GPS日志数据的结构，用于数据处理和验证，更清晰地分离不同来源的位置数据
 * @author Assistant
 * @date 2024-02-05
 * @updated 2024-03-05
 */

/**
 * 日志中GPS数据接口
 */
export interface GpsData {
  /**
   * 速度，单位为 km/h，可选字段
   */
  speed?: number;

  /**
   * GPS经度（实际值可能为负数，需要处理坐标系转换），可选字段
   */
  lng?: number;

  /**
   * GPS纬度（实际值可能为负数，需要处理坐标系转换），可选字段
   */
  lat?: number;

  /**
   * 是否定位成功
   */
  isFix: boolean;
}

/**
 * 日志中LBS(基站)数据接口
 */
export interface LbsData {
  /**
   * 基站定位的经度（注意：在原始字段中名称为lbslat）
   */
  lbslat: string;

  /**
   * 基站定位的纬度（注意：在原始字段中名称为lbslng）
   */
  lbslng: string;
}

/**
 * 经过处理后的位置信息
 */
export interface PositionData {
  /**
   * 经度
   */
  lng: number;

  /**
   * 纬度
   */
  lat: number;

  /**
   * 位置数据来源
   */
  source: 'gps' | 'lbs';

  /**
   * 是否定位成功
   */
  isFix: boolean;

  /**
   * 速度，单位为 km/h，可选字段
   */
  speed?: number;
}

/**
 * 日志中原始GPS日志数据
 */
export interface RawGpsLogData {
  /**
   * IMEI（国际移动设备身份码），用于唯一标识移动设备
   */
  imei: string;

  /**
   * 日志记录的时间戳，格式为"MM-DD hh:mm:ss"
   */
  datetime: string;

  /**
   * 状态标志位（日志中存在的 flag 字段），用于表示日志的状态
   */
  flag: number;
  
  /**
   * GPS数据，可选字段
   */
  gps?: GpsData;

  /**
   * LBS（基站定位）数据，可选字段
   */
  lbs?: LbsData;
  
  /**
   * 处理后的位置信息，包含最终使用的位置数据及来源
   */
  position?: PositionData;
  
  /**
   * 电池电压，单位为毫伏（根据日志值判断，如 4103 表示 4.103V）
   */
  vbatt: number;

  /**
   * 信号强度，范围 0-31（根据 CSQ 规范）
   */
  csq: number;

  /**
   * 原始位置数据，保存未经处理的经纬度信息
   * 可能来自GPS或基站(LBS)定位，具体来源可通过position.source字段区分
   */
  originalPosition?: { lng: number; lat: number };
} 